package com.briup.day04;

import java.util.Arrays;
import java.util.Random;

public class ArrayTest {
    public static void main(String[] args) {
        // 数组的声明，定义一个数组，存储10个100以内的随机整数
        int[] arr = new int[10];
        // 赋值，10个100以内的整数随机数
        Random random = new Random();
        // 在数组中，是通过数组变量名+数组元素下标的方式 访问某一个指定空间
        // 在数组中，无需给内部元素标注特定的变量名
        // 如，给第9位的元素赋值，数组的下标是从0开始的，所以第9位元素的下标为8
        arr[8] = random.nextInt(100);
        System.out.println(Arrays.toString(arr));
        arr[0] = random.nextInt(100);

        // 使用循环，给数组中所有的元素位置进行赋值
        // arr.length ==> 在数组内部中存在一个唯一的属性length，用于记录数组的长度
        for (int i = 0; i < arr.length; i++) {
            // 通过变量i来控制数组元素的下标，从0-9
            // 在给数组赋值时，一定要注意数组的下标不能操作数组长度-1,
            // 否则会报ArrayIndexOutOfBoundsException错误（数组下标越界异常）
            arr[i] = random.nextInt(100);
        }
        // 查看结果，如果要查看数组中各个元素位置的内容，
        // 那么需要通过Arrays.toString()方法，统一查看
        System.out.println(Arrays.toString(arr));
    }

    private static void test() {
        // 数组的声明，定义一个数组，存储10个100以内的随机整数
        // 如果只写赋值语句的右侧，会报语法错误，因为右侧是创建值的操作
        // 该值应该存储的内存空间中，并存在一个标识引用该值，
        // 如果没没有标识引用这个值，那么在后续的程序中就无法使用该值
        int[] arrs = new int[10];
//        char[] arrs = new char[2];
        // 在Java中引用数据类型，并且通过new创建出来的对象，都是存放在
        // JVM的堆区中，并且这些对象是存在初始值的，如基本数据类型的数组，
        // 其空间中存放的默认值为0(int 0，double 0.0，char '\u0000'，false)
        System.out.println(Arrays.toString(arrs));

        // 方式2：在创建时，使用{}指定数组的初始值，在指定初始值的使用长度就已经确定了
//        int[] arrs2 = new int[]{1, 2, 3, 4, 5};
        // 可以简写为如下操作
        int[] arrs2 = {1, 2, 3, 4, 5};
    }
}
